package com.spring.shops.service.impl;

import com.spring.shops.dao.TzProdPropMapper;
import com.spring.shops.dao.TzProdPropValueMapper;
import com.spring.shops.model.dto.ProdPropDTO;
import com.spring.shops.model.entity.ProdProp1;
import com.spring.shops.model.entity.TzProdProp;
import com.spring.shops.model.entity.TzProdPropValue;
import com.spring.shops.model.vo.ProdPropVO;
import com.spring.shops.service.ProdPropService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@Service
public class ProdPropServiceImpl implements ProdPropService {
    @Autowired
    private TzProdPropMapper tzProdPropMapper;
    @Autowired
    private TzProdPropValueMapper tzProdPropValueMapper;


    @Override
    public ProdPropVO getPage(ProdPropVO prodPropVO, String propName) {

        ProdPropDTO prodPropDTO = new ProdPropDTO();
        prodPropDTO.setPropName(propName);
        int size = Integer.parseInt(prodPropVO.getSize());
        prodPropDTO.setSize(size);
        int current = Integer.parseInt(prodPropVO.getCurrent());
        prodPropDTO.setCurrent(current - 1);
        TzProdProp[] tzProdProps = tzProdPropMapper.selectByPageSearch(prodPropDTO);
        System.out.println(tzProdProps.length);
        long total =tzProdProps.length ;
        prodPropVO.setTotal(total);
        List<TzProdProp> list = Arrays.asList(tzProdProps);
        List<ProdProp1> list1 = new ArrayList<>();
        for (TzProdProp tzProdProp : list) {
            ProdProp1 prodProp1 = new ProdProp1();
            prodProp1.setPropName(tzProdProp.getPropName());
            prodProp1.setShopId(tzProdProp.getShopId());
            prodProp1.setPropId(tzProdProp.getPropId());
            prodProp1.setRule(tzProdProp.getRule());
            List<TzProdPropValue> prodPropVo2s = tzProdPropValueMapper.selectByPropId(tzProdProp.getPropId());
            prodProp1.setProdPropValues(prodPropVo2s);
            list1.add(prodProp1);
        }
        System.out.println(list1.size());
        prodPropVO.setRecords(list1);

        return prodPropVO;
    }
    @Override
    public void save(ProdProp1 prodProp1) {
       tzProdPropMapper.insert(prodProp1);
        List<TzProdProp> tzProdProps = tzProdPropMapper.selectAll();
        TzProdProp maxTzProdProp = null;
        long maxPropId = 0;
        for (TzProdProp tzProdProp : tzProdProps) {
            Long currentPropId = tzProdProp.getPropId();
            if (currentPropId > maxPropId) {
                maxPropId = currentPropId;
                maxTzProdProp = tzProdProp;
            }
            maxTzProdProp.setPropId(maxPropId);
        }
        prodProp1.setPropId(maxPropId);


        tzProdPropValueMapper.insertPropValues(prodProp1.getPropId(),
               prodProp1.getProdPropValues());

    }

    @Override
    public void deleted(Long propId) {
        tzProdPropMapper.deleteByPrimaryKey(propId);

        tzProdPropValueMapper.deleteByPropId(propId);

    }

    @Override
    public TzProdPropValue selectBySpecId(Long specId) {
        TzProdPropValue tzProdPropValues =
                tzProdPropValueMapper.selectAllById(specId);
        return tzProdPropValues;
    }

    @Override
    public void update(ProdProp1 prodProp1) {

        long id=prodProp1.getPropId();

        tzProdPropValueMapper.deleteByPropId(id);
        tzProdPropValueMapper.insertPropValues(prodProp1.getPropId(),
                prodProp1.getProdPropValues());

        TzProdProp tzProdProp = new TzProdProp();
        tzProdProp.setPropName(prodProp1.getPropName());
        tzProdProp.setShopId(prodProp1.getShopId());
        tzProdProp.setPropId(id);
        tzProdProp.setRule(prodProp1.getRule());
        tzProdPropMapper.updateByPrimaryKeySelective(tzProdProp);


    }


}


